package it.apiconsulting.sharem.controller;

import it.apiconsulting.sharem.controller.bean.GuestBean;
import it.apiconsulting.sharem.controller.bean.ReportPlayer;
import it.apiconsulting.sharem.controller.bean.UtenteBean;
import it.apiconsulting.sharem.dao.BranoDao;
import it.apiconsulting.sharem.dao.PlaylistDao;
import it.apiconsulting.sharem.dao.UtenteDao;
import it.apiconsulting.sharem.model.Brano;
import it.apiconsulting.sharem.model.Playlist;

import java.util.List;

public class MediaPlayerAction extends BaseAction {

	private static final long serialVersionUID = 9149826260758390091L;
	
	private String usernameUtente;
	private String passwordUtente; 
	
	private Playlist playlist;
	private List<Playlist> playlists;
	private PlaylistDao linkPlaylistController;
	
	private Brano brano;
	private List<Brano> branoList;
	private BranoDao linkBranoController;
	
	private List<GuestBean> guestList;
	
	private String id;
	
	private List<ReportPlayer> data;
	 
	private UtenteDao linkLocaleController;
	private List<UtenteBean> locali;
	
	public MediaPlayerAction() {
		super();
		linkPlaylistController = new PlaylistDao();
		linkLocaleController = new UtenteDao();
	}

	public String execute() {
		
		System.out.println(usernameUtente);
		System.out.println(passwordUtente);
//		if ( isLocaleLogged() ){
//			
//			FactoryBean fb = factory.getInstance();
//			UtenteBean utente = fb.getUtente();
//			
//			if ( utente != null ){
//
//				//GESTIONE PLAYER
//				if ( fb.hmPlayer.get(utente.getId()) == null ) {
//					
//					/* GESTIONE PLAYER (BASE) */
//					Player p = new Player(utente.getPathVlc(), utente.getId(), utente.getIp());
//					fb.hmPlayer.put(utente.getId(), p);
//				} 
//				
//				/* GESTIONE PLAYER (PLAYLIST) */
//				playlists = linkPlaylistController.listByIdUser(utente.getId());
//				if ( null != playlists && playlists.size()>0 ) {
//					
//					if ( null != utente.getPlaylistDefault() ) { 
//						
//						branoList = new ArrayList<Brano>();
//						long idPlayDefault = utente.getPlaylistDefault();
//						for ( Playlist playlist : playlists ) {
//							
//							if ( idPlayDefault == playlist.getId() ) {
//								
//								playlist.setStato(true);
//								fb.hmPlayer.get(utente.getId()).enqueue(playlist.getPath());
//								List<String> brani = fb.hmPlayer.get(utente.getId()).playlist();
//								if ( brani.size()>0 ) {
//									
//									for (int i = 0; i < brani.size(); i++ ) {
//										Brano brano = new Brano();
//										brano.setTitolo(brani.get(i));
//										branoList.add(brano);
//									}
//								}
//							}
//						}
//					} else {
//						System.out.println("Utente senza playlist di default");
//					}
//					
//				} else {
//					System.out.println("Utente senza playlist");
//				}
//				
//				/* GESTIONE PLAYER (GUESTS) */
//				guestList = fb.hmGuests.get(utente.getId());
//				
//			} else {
//				/* LOCALE NON LOGGATO */
//				return LOGIN;
//			}
			return SUCCESS;
//		} else return LOGIN;	
	}
	
	public String playPauseJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			rp.setId(1);
//			rp.setName("playPause");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {
//					player.pause();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String playJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("play");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {				
//					player.play("");
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String pauseJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("pause");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {	
//					player.pause();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String stopJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("stop");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {	
//					player.stop();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String nextJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("next");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {	
//					player.next();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String prevJson() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("prev");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {	
//					player.prev();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	
	public String playPauseJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("playPause");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( fb.getUtente() != null ){
//					player.pause();
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String playJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("play");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( player != null ) {
//					player.play("");
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String pauseJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("pause");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( player != null ) {
//						
//					player.pause();
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String stopJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("stop");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( player != null ) {
//	
//					player.stop();
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String nextJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("next");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( player != null ) {
//						
//					player.next();
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String prevJsonGuest() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			
//			rp.setId(1);
//			rp.setName("prev");
//			if ( isGuestLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				Player player = fb.getGuest().getPlayer();
//				if ( player != null ) {
//					player.prev();
//					rp.setEsito(true);
//					this.data.add(rp);
//				} else {
//					/* PLAYER NON ATTIVO */
//					rp.setEsito(false);
//					this.data.add(rp);
//				}
//			} else {
//				/* GUEST NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public String setIpPlayer() {
		
//		data =  new ArrayList<ReportPlayer>();
//		ReportPlayer rp = new ReportPlayer();
//		try {
//			rp.setId(1);
//			rp.setName("setIpPlayer");
//			if ( isLocalLogged() ) {
//				
//				FactoryBean fb = factory.getInstance();
//				UtenteBean utente = fb.getUtente();
//				Player player = fb.hmPlayer.get(utente.getId());
//				if ( player != null ) {
//					player.pause();
//					rp.setEsito(true);
//					this.data.add(rp);
//					this.data.add(rp);
//				}
//			} else {
//				/* LOCALE NON LOGGATO */
//				rp.setEsito(false);
//				this.data.add(rp);
//			}
//		} catch (Exception ex ) {
//			rp.setEsito(false);
//			this.data.add(rp);
//			ex.printStackTrace();
//		}
		return SUCCESS;
	}
	
	public boolean isLocaleLogged(){
		
//		boolean found = false;
//		locali = linkLocaleController.list();
//		for (int i = 0; i < locali.size(); i++) {
//			if ( locali.get(i).getId().equals(id) && locali.get(i).isAttivo() ) {
//				found=true;
//			}
//		}
//		if ( found ) return true;
//		else return false;
		return true;
	}
	

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public Playlist getPlaylist() {
		return playlist;
	}

	public void setPlaylist(Playlist playlist) {
		this.playlist = playlist;
	}

	public List<Playlist> getPlaylists() {
		return playlists;
	}

	public void setPlaylists(List<Playlist> playlists) {
		this.playlists = playlists;
	}

	public List<Brano> getBranoList() {
		return branoList;
	}

	public void setBranoList(List<Brano> branoList) {
		this.branoList = branoList;
	}
	
	public List<ReportPlayer> getData() {
		return data;
	}

	public void setData(List<ReportPlayer> data) {
		this.data = data;
	}

	public List<GuestBean> getGuestList() {
		return guestList;
	}

	public void setGuestList(List<GuestBean> guestList) {
		this.guestList = guestList;
	}

	public String getUsernameUtente() {
		return usernameUtente;
	}

	public void setUsernameUtente(String usernameUtente) {
		this.usernameUtente = usernameUtente;
	}

	public String getPasswordUtente() {
		return passwordUtente;
	}

	public void setPasswordUtente(String passwordUtente) {
		this.passwordUtente = passwordUtente;
	}
}
